import ffmpeg
import subprocess

""" 原理说明:
1.ffmpeg-python 库不支持直接播放视频，需要借助其他工具，如 VLC 播放器。
2.构建 FFmpeg 命令，将视频流输出到标准输出。
3.启动 VLC 播放器，从标准输入读取视频流。
"""

def play_video(input_file):
    try:
        # 构建 FFmpeg 命令，将视频流输出到标准输出
        process1 = (
            ffmpeg
            .input(input_file)
            .output('pipe:', format='matroska', vcodec='copy', acodec='copy')
            .run_async(pipe_stdout=True)
        )

        # 启动 VLC 播放器，从标准输入读取视频流
        process2 = subprocess.Popen(['vlc', '-'], stdin=process1.stdout)

        # 等待 FFmpeg 进程结束
        process1.wait()

        # 关闭 VLC 播放器的标准输入
        process2.stdin.close()

        # 等待 VLC 播放器进程结束
        process2.wait()

    except Exception as e:
        print(f"发生错误: {e}")

if __name__ == "__main__":
    input_file = '../video/112.mkv'
    play_video(input_file)
